@echo off
title Matrix Framework 系统状态检查
echo.
echo ===============================================
echo        Matrix Framework 系统状态检查
echo ===============================================
echo.

REM 检查前端服务状态
echo [1/6] 检查前端服务状态...
curl -s http://localhost:3000/ >nul 2>&1
if %errorlevel% equ 0 (
    echo ✅ 前端服务运行正常 (http://localhost:3000/)
) else (
    echo ❌ 前端服务未启动或不可访问
)

REM 检查Docker服务
echo [2/6] 检查Docker服务状态...
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | findstr matrix-
if %errorlevel% equ 0 (
    echo ✅ Docker服务运行正常
    echo.
    echo 📊 Docker容器状态：
    docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | findstr matrix-
) else (
    echo ❌ 没有找到运行中的Matrix服务容器
    echo 💡 请运行: start.bat
)

REM 检查端口占用情况
echo.
echo [3/6] 检查端口占用情况...
echo 📡 端口使用状态：
netstat -an | findstr :3000 | findstr LISTEN >nul 2>&1
if %errorlevel% equ 0 (
    echo   ✅ 端口 3000 (前端) - 已占用
) else (
    echo   ❌ 端口 3000 (前端) - 空闲
)

netstat -an | findstr :8080 | findstr LISTEN >nul 2>&1
if %errorlevel% equ 0 (
    echo   ✅ 端口 8080 (网关) - 已占用
) else (
    echo   ❌ 端口 8080 (网关) - 空闲
)

netstat -an | findstr :5000 | findstr LISTEN >nul 2>&1
if %errorlevel% equ 0 (
    echo   ✅ 端口 5000 (服务注册) - 已占用
) else (
    echo   ❌ 端口 5000 (服务注册) - 空闲
)

netstat -an | findstr :5001 | findstr LISTEN >nul 2>&1
if %errorlevel% equ 0 (
    echo   ✅ 端口 5001 (租户管理) - 已占用
) else (
    echo   ❌ 端口 5001 (租户管理) - 空闲
)

netstat -an | findstr :5002 | findstr LISTEN >nul 2>&1
if %errorlevel% equ 0 (
    echo   ✅ 端口 5002 (用户系统) - 已占用
) else (
    echo   ❌ 端口 5002 (用户系统) - 空闲
)

REM 检查数据库连接
echo.
echo [4/6] 检查数据库连接状态...
docker exec postgres-matrix pg_isready -U postgres >nul 2>&1
if %errorlevel% equ 0 (
    echo ✅ PostgreSQL 连接正常
) else (
    echo ❌ PostgreSQL 连接失败或未启动
)

docker exec redis-matrix redis-cli ping >nul 2>&1
if %errorlevel% equ 0 (
    echo ✅ Redis 连接正常
) else (
    echo ❌ Redis 连接失败或未启动
)

REM 检查健康状态端点
echo.
echo [5/6] 检查服务健康状态...

REM 租户管理服务健康检查
curl -k -s https://localhost:5001/healthz >nul 2>&1
if %errorlevel% equ 0 (
    echo ✅ 租户管理服务健康 (https://localhost:5001/healthz)
) else (
    echo ❌ 租户管理服务不可访问
)

REM API网关健康检查
curl -s http://localhost:8080/healthz >nul 2>&1
if %errorlevel% equ 0 (
    echo ✅ API网关服务健康 (http://localhost:8080/healthz)
) else (
    echo ❌ API网关服务不可访问
)

REM 检查系统资源
echo.
echo [6/6] 检查系统资源使用情况...
echo 💻 系统资源：

REM CPU和内存使用
wmic cpu get loadpercentage /value | findstr LoadPercentage >nul 2>&1
if %errorlevel% equ 0 (
    echo   🖥️ CPU使用率: 检查中...
    wmic cpu get loadpercentage /value | findstr LoadPercentage
)

wmic OS get TotalVisibleMemorySize,FreePhysicalMemory /value | findstr Memory >nul 2>&1
if %errorlevel% equ 0 (
    echo   💾 内存使用: 检查中...
    wmic OS get TotalVisibleMemorySize,FreePhysicalMemory /value | findstr Memory
)

REM Docker资源使用
echo.
echo 🐳 Docker容器资源使用：
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}" | findstr matrix-
if %errorlevel% neq 0 (
    echo   (没有运行中的Matrix容器)
)

echo.
echo ===============================================
echo              状态检查完成！
echo ===============================================
echo.

REM 提供快速访问链接
echo 🌐 快速访问链接：
echo   前端应用:       http://localhost:3000/
echo   API网关:        http://localhost:8080/
echo   服务注册中心:    http://localhost:5000/
echo   租户管理API:     https://localhost:5001/swagger
echo   用户系统API:     https://localhost:5002/swagger
echo.

REM 问题诊断建议
echo 💡 问题诊断建议：
echo   1. 如果前端未启动: cd src\web\frontend && npm run dev
echo   2. 如果后端服务未启动: start.bat
echo   3. 如果Docker容器有问题: docker-compose -f src/docker/docker-compose.microservices.yml logs
echo   4. 如果端口冲突: 检查其他应用是否占用相同端口
echo   5. 如果数据库连接失败: 检查PostgreSQL容器状态
echo.

pause